/*
    Project: OCMF (Operant Chamber Management Framework)
    Version: 1.0
    Author: Copyright (C) 2010, Samuel Delaney & Andrew Harvey
    Licence:
        This file is part of OCMF.

            OCMF is free software: you can redistribute it and/or modify
            it under the terms of the GNU General Public License as published by
            the Free Software Foundation, either version 3 of the License, or
            (at your option) any later version.

            OCMF is distributed in the hope that it will be useful,
            but WITHOUT ANY WARRANTY; without even the implied warranty of
            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
            GNU General Public License for more details.

            You should have received a copy of the GNU General Public License
            along with OCMF.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef ACTION_H
#define ACTION_H

#include <QDomNode>
#include <QDateTime>


class ActionCollection;

class Action
{
private:
    ActionCollection * parentActionCollection;
public:
    ActionCollection * ParentActionCollection()
    {
        return parentActionCollection;
    }

    static void WriteResult(QDomElement xmlElement)
    {
        resultXmlDocument.appendChild(xmlElement);
    }

    static QString GetResultXml()
    {
        //get a copy of the xml from the document in a string
        QString resultXml = resultXmlDocument.toString();

        //flush the document
        resultXmlDocument.clear();

        //return the xml string
        return resultXml;
    }

    virtual void Do() =0;
    virtual QDomElement ToResultXml() =0;

    QDateTime TimeStamp;

    static QDomDocument resultXmlDocument;
};

#endif // ACTION_H
